<?xml version="1.0" ?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
  <module name="TreeWalker">
    <!-- Imports -->
    <module name="RedundantImport" />
    <module name="UnusedImports" />
    <module name="IllegalImport">
      <property name="regexp" value="true" />
      <!-- Reject any org.junit import that's not also org.junit.jupiter: -->
      <property name="illegalClasses" value="^org\.junit\.(?!jupiter\.)(?!platform\.).+" />
    </module>

    <!-- Class design -->
    <module name="FinalClass" />
    <module name="InterfaceIsType" />
    <module name="MutableException" />
    <module name="VisibilityModifier" />

    <!-- Coding -->
    <module name="DeclarationOrder" />
    <module name="InnerAssignment" />
    <module name="UnusedLocalVariable" />

    <!-- Naming Conventions -->
    <module name="CatchParameterName" />
    <module name="LambdaParameterName">
      <!-- Allow "_" in anticipation of unnamed variables -->
      <property name="format" value="^[a-z][a-zA-Z0-9]*$|^[_]*$" />
    </module>
    <module name="LocalFinalVariableName" />
    <module name="LocalVariableName" />
    <module name="MemberName" />
    <module name="MethodName" />
    <module name="PackageName" />
    <module name="ParameterName">
      <!-- Allow "_" in anticipation of unnamed variables -->
      <property name="format" value="^[a-z][a-zA-Z0-9]*$|^[_]*$" />
    </module>
    <module name="PatternVariableName">
      <!-- Allow "_" in anticipation of unnamed variables -->
      <property name="format" value="^[a-z][a-zA-Z0-9]*$|^[_]*$" />
    </module>
    <module name="RecordComponentName" />
    <module name="StaticVariableName" />
    <module name="TypeName" />
  </module>
</module>
